home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Browsers, Managers & Extensions / ScribeFire 3.1.3 / scribefire-3.1.3-fx+sm.xpi / install.js < prev    next >
Text File  |  2008-10-16  |  4KB  |  117 lines

  1. var XpiInstaller = {
  2.  
  3.     // --- Editable items begin ---
  4.     extFullName: 'ScribeFire', // The name displayed to the user (don't include the version)
  5.     extShortName: 'performancing', // The leafname of the JAR file (without the .jar part)
  6.     extVersion: '3.1.3',
  7.     extAuthor: 'Christopher Finke',
  8.     extLocaleNames: ['en-US','bg-BG','cs-CZ','de-DE','es-ES','fi-FI','fr-FR','he-IL','id-ID','is-IS','it-IT','ja-JP','ko-KR','nl-NL','pl-PL','pt-BR','ru-RU','sr-RS','sr-YU','sv-SE','th-TH','zh-CN','zh-TW'],
  9.     prefs : ["scribefire.js"],
  10.     extPostInstallMessage: 'Please restart your browser to finish the installation.', // Set to null for no post-install message
  11.     // --- Editable items end ---
  12.  
  13.     profileInstall: true,
  14.     silentInstall: false,
  15.  
  16.     install: function()
  17.     {
  18.         var jarName = this.extShortName + '.jar';
  19.         var profileDir = Install.getFolder('Profile', 'chrome');
  20.  
  21.         // Parse HTTP arguments
  22.         this.parseArguments();
  23.  
  24.         // Check if extension is already installed in profile
  25.         if (File.exists(Install.getFolder(profileDir, jarName)))
  26.         {
  27.             if (!this.silentInstall)
  28.             {
  29.                 Install.alert('Updating existing Profile install of ' + this.extFullName + ' to version ' + this.extVersion + '.');
  30.             }
  31.             this.profileInstall = true;
  32.         }
  33.         else if (!this.silentInstall)
  34.         {
  35.             // Ask user for install location, profile or browser dir?
  36.             this.profileInstall = Install.confirm('Install ' + this.extFullName + ' ' + this.extVersion + ' to your Profile directory (OK) or your Browser directory (Cancel)?');
  37.         }
  38.  
  39.         // Init install
  40.         var dispName = this.extFullName + ' ' + this.extVersion;
  41.         var regName = '/' + this.extAuthor + '/' + this.extShortName;
  42.         Install.initInstall(dispName, regName, this.extVersion);
  43.  
  44.         // Find directory to install into
  45.         var installPath;
  46.         if (this.profileInstall) installPath = profileDir;
  47.         else installPath = Install.getFolder('chrome');
  48.  
  49.         // Add JAR file
  50.         Install.addFile(null, 'chrome/' + jarName, installPath, null);
  51.  
  52.         // Register chrome
  53.         var jarPath = Install.getFolder(installPath, jarName);
  54.         var installType = this.profileInstall ? Install.PROFILE_CHROME : Install.DELAYED_CHROME;
  55.  
  56.         // Register content
  57.         Install.registerChrome(Install.CONTENT | installType, jarPath, 'content/');
  58.  
  59.         // Register locales
  60.         for (var locale in this.extLocaleNames)
  61.         {
  62.             var regPath = 'locale/' + this.extLocaleNames[locale] + '/';
  63.             Install.registerChrome(Install.LOCALE | installType, jarPath, regPath);
  64.         }
  65.  
  66.         // Register skin
  67.         var regPath = 'skin/';
  68.         Install.registerChrome(Install.SKIN | installType, jarPath, regPath);
  69.  
  70.         for (var i = 0; i < this.prefs.length; i++) {
  71.             addFile(this.extShortName + " Defaults", this.extVersion, "defaults/preferences/" + this.prefs[i], getFolder(getFolder("Program", "defaults"), "pref"), this.prefs[i], true);
  72.         }
  73.  
  74.         // Perform install
  75.         var err = Install.performInstall();
  76.         if (err == Install.SUCCESS || err == Install.REBOOT_NEEDED)
  77.         {
  78.             if (!this.silentInstall && this.extPostInstallMessage)
  79.             {
  80.                 Install.alert(this.extPostInstallMessage);
  81.             }
  82.         }
  83.         else
  84.         {
  85.             this.handleError(err);
  86.             return;
  87.         }
  88.     },
  89.  
  90.     parseArguments: function()
  91.     {
  92.         // Can't use string handling in install, so use if statement instead
  93.         var args = Install.arguments;
  94.         if (args == 'p=0')
  95.         {
  96.             this.profileInstall = false;
  97.             this.silentInstall = true;
  98.         }
  99.         else if (args == 'p=1')
  100.         {
  101.             this.profileInstall = true;
  102.             this.silentInstall = true;
  103.         }
  104.     },
  105.  
  106.     handleError: function(err)
  107.     {
  108.         if (!this.silentInstall)
  109.         {
  110.             Install.alert('Error: Could not install ' + this.extFullName + ' ' + this.extVersion + ' (Error code: ' + err + ')');
  111.         }
  112.         Install.cancelInstall(err);
  113.     }
  114. };
  115.  
  116. XpiInstaller.install();
  117.